// 堆栈与copy和move

struct Point {
    x: i32,
    y: i32,
}

pub fn study() {
    // Box允许将数据存储在堆上而不是栈上，而在栈上只保留指向堆数据的指针。
    // 使用Box可以避免在栈上复制大量数据，提高性能。Box本身几乎没有性能开销，除了将数据存储在堆上而不是栈上。通常在以下情况下会使用Box：
    let mut boxed_point = Box::new(Point { x: 10, y: 20 });
    println!("x: {}, y: {}", boxed_point.x, boxed_point.y);
    boxed_point.y += 500;
    println!("x: {}, y: {}", boxed_point.x, boxed_point.y);
    let mut boxed_point = Box::new(30);
    println!("{}", *boxed_point);
    *boxed_point += 10;
    println!("{}", *boxed_point);

    let x = "233".to_string();
    let y = x.clone();
    println!("x:{}", x);
}